// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	12/19/2014 7:11:37 PM				
// -----------------------------

#ifndef _PostPass_h
#define _PostPass_h

#include "RenderPass.h"

class PostPass : public RenderPass
{
public:
	PostPass(RenderManager* lpManager, const RenderTargets& targets);
	virtual ~PostPass();

	virtual void	Init(Application* lpApp);
	virtual void	Apply(Application* lpApp, Scene* lpScene);
	virtual void	UpdateTargets(Application* lpApp, const RenderTargets& targets);

	void			SetWaterOverlayEnabled(Bool bEnable);
	void			SetWaterOverlayColor(Color color);
	void			SetWaterOverlayStrength(Float strength);
	void			SetWaterVignetteRadius(Float radius);
	void			SetFogNear(Float fogNear);
	void			SetFogFar(Float fogFar);
	void			SetFogColor(const Color& color);
	void			SetFogSecondColor(const Color& color);
	void			SetFogEnabled(Bool bEnabled);

private:

	IComputeShader*	m_lpComputeShader;
	IBuffer*		m_lpPostBuffer;

	UInt32			m_ThreadCountX;
	UInt32			m_ThreadCountY;
	UInt32			m_ThreadCountZ;

	Bool			m_bWaterOverlayEnabled;
	Float			m_WaterOverlayStrength;
	Color			m_WaterOverlayColor;
	Float			m_WaterVignetteRadius;
	Float			m_FogNear;
	Float			m_FogFar;
	Color			m_FogColor;
	Color			m_FogSecondColor;
	Bool			m_FogEnabled;

	PostPass(const PostPass& refPostPass);
	PostPass& operator=(const PostPass& refPostPass);
};

#endif